const multer = require('multer');
const server = require('../controller/server');
const path = require('path'); // 添加path模块

//生成随机数
function random(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

// 设置存储配置
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './data/files'); // 保存文件的目录
  },
  filename: function (req, file, cb) {
    try {
      // 修复中文文件名乱码问题
      const originalName = Buffer.from(file.originalname, 'latin1').toString('utf8');
      console.log('原始文件名:', originalName);
      
      // 安全地提取扩展名
      const fileExtension = path.extname(originalName) || '';
      
      // 生成安全的文件名: 时间戳_随机数.扩展名
      const safeName = `${Date.now()}_${random(1000, 9999)}${fileExtension}`;
      
      cb(null, safeName);
    } catch (error) {
      console.error('文件名处理错误:', error);
      // 出错时使用安全的默认名称
      cb(null, `${Date.now()}_${random(1000, 9999)}.unknown`);
    }
  }
});

// 创建 multer 实例
const upload = multer({ storage: storage });

module.exports = function (app) {
  app.post('/upload', upload.single('file'), (req, res) => {
    try {
      if (!req.file) {
        return res.send({
          code: 400,
          message: "没有收到文件"
        });
      }
      
      // 修复中文文件名处理
      const originalName = Buffer.from(req.file.originalname, 'latin1').toString('utf8');
      const fileNameParts = originalName.split('.');
      const fileFormat = fileNameParts.length > 1 ? fileNameParts.pop() : '';
      const fileName = fileNameParts.join('.');
      
      let data = {
        url: req.file.filename,
        file_name: fileName, // 正确的中文文件名
        format: fileFormat,
        moment: new Date(),
      };
      
      server.uploadFile(data, res);
    } catch (err) {
      console.error("文件上传处理错误:", err);
      res.send({
        code: 400,
        message: "文件上传失败"
      });
    }
  });
};